package es.unileon.rnag.jgen.operadores;

import java.util.ArrayList;
import java.util.List;

import es.unileon.rnag.jgen.Cromosoma;

/**
 * Clase que implementa el Elitismo
 * @author Abel Mayorga Gonz&aacute;lez
 * @author Sergio Fern&aacute;ndez Mart&iacute;nez
 * @version 1.0
 */
public class ElitismoBasico extends Elitismo {
	 
	/**
	 * Constructor
	 * @param p: Porcentaje de seleccionados en tanto por uno
	 * @param g: N&uacute;mero de generaciones durante las que se aplica el elitismo.
	 */
	public ElitismoBasico(float p, int g) {
		super(p, g);
	}

	@Override
	public List<Cromosoma> operar (int generacion, List<Cromosoma> poblacion){
		_mejores = new ArrayList<Cromosoma>();
		int elementos = poblacion.size();		
		int elegidos = (int) (_porcentaje*elementos);
		//Se presupone que la lista de poblacion esta ordenada de mejor a peor
		for (int i=0; i<elegidos; i++){
			_mejores.add(poblacion.remove(i));
		}
		return poblacion;
	}
}
